#include "head.h"

#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/select.h>
#include <stdio.h>
#include <stdlib.h> 
#include <stdio.h>
#include <pthread.h>
int main(int argc, const char *argv[])
{
	int server_sock;                 // 服务器套接字
	int client_sock;                 //客户端套接字
	struct sockaddr_in client_addr;  //客户端结构体
	socklen_t client_len;             //客户端结构体大小
	fd_set readfds;                 //select监听读事件

	//套接字初始化
	if(sock_init(&server_sock)<0){
		perror("初始化失败");
		exit(1);
	}
#if 1
	if(db_init(DATABASE)<0){ 				     //数据库初始化
		perror("数据初始化失败");
		exit(1);
	}
#endif
	printf("LINE = %d\n",__LINE__);
	if(listen(server_sock,3)<0){		//监听服务器套接字，并将监听队列设置为3
		perror("服务器监听失败");
		exit(1);
	}



	while(1){
	printf("LINE = %d\n",__LINE__);
		FD_SET(server_sock,&readfds);
#if 1
	printf("LINE = %d\n",__LINE__);
		if(select(server_sock+1 ,&readfds,NULL,NULL,NULL)<0){  //select只监听客户端是否有请求
			perror("select监听出错");
			continue;
		}
#endif 	
	printf("LINE = %d\n",__LINE__);
		client_sock=accept(server_sock,(struct sockaddr*)&client_addr,&client_len);
		if(client_sock<0){
			perror("接受请求失败");
			continue;
		}

	printf("LINE = %d\n",__LINE__);
#if 1
		if(thread_create(client_sock)<0){
			perror("线程创建失败");
		}
		printf("server:socket::%d\n",client_sock);
#endif
	}

	return 0;
}


